/**
 * 用户信息相关接口
 */

import { post } from './request'
import type { SpbUpdateUserProfileRequest } from './apifox/models'

/**
 * 更新用户信息
 * 更新用户的个人资料信息
 * 
 * @param data 请求参数，包含用户信息字段：
 *   - openid: 用户openid
 *   - nickname: 昵称
 *   - avatarUrl: 头像URL
 *   - gender: 性别
 *   - country: 国家
 *   - province: 省份
 *   - city: 城市
 *   - language: 语言
 * @returns 返回操作结果
 */
export function updateUserProfile(data: SpbUpdateUserProfileRequest): Promise<Record<string, any>> {
  return post<Record<string, any>>('/update_user_profile', data, {
    showLoading: true,
    loadingText: '更新中...'
  })
}

/**
 * 解密微信手机号
 * 解密微信小程序获取的加密手机号数据
 * 
 * 根据微信官方文档：https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
 * 
 * @param data 请求参数：
 *   - code: 新版本微信小程序返回的 code（推荐，必填）
 *   - openid: 用户 openid（可选，根据微信文档）
 *   - encryptedData: 旧版本加密数据（可选，已废弃）
 *   - iv: 旧版本初始向量（可选，已废弃）
 * @param options 请求选项，可控制是否显示 loading 等
 * @returns 返回解密后的手机号，格式如：{ phoneNumber: '13800138000' }
 */
export function decryptPhoneNumber(
  data: { code?: string; openid?: string; encryptedData?: string; iv?: string },
  options?: { showLoading?: boolean; loadingText?: string }
): Promise<{ phoneNumber: string }> {
  return post<{ phoneNumber: string }>('/phone_decrypt', data, {
    showLoading: options?.showLoading ?? true,
    loadingText: options?.loadingText || '获取中...',
    ...(options || {})
  })
}

